package com.iflytek.feignclients;

import com.iflytek.product.entity.Product;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author yfliu9
 * @version 1.0
 * @description: TODO
 * @date 2021/8/28 15:58
 */
//value 属性用来书写调用服务id
@FeignClient(value = "PRODUCT")
public interface ProductClient {

    /**
     * 简单模拟
     * @return
     */
    @GetMapping("/product")
    String product();

    /**
     * 零散多参数传递（问号传参）
     * @param name
     * @param id
     * @return
     */
    @GetMapping("/test")
    String test(@RequestParam("name") String name, @RequestParam("id") Integer id);

    /**
     * 零散多参数传递（路径传参）
     * @param name
     * @param id
     * @return
     */
    @GetMapping("/path/{name}/{id}")
    String testPath(@PathVariable("name") String name, @PathVariable("id") Integer id);

    /**
     * 对象传参（这里的对象一般都是放到common模块，项目共有模块）
     * @param product
     * @return
     */
    @PostMapping("/object")
    String testObject(@RequestBody Product product);

    /**
     * 测试传参为数组
     * @param ids
     * @return
     */
    @GetMapping("/array")
    String testArray(@RequestParam("ids") String[] ids);

    /**
     * 测试集合
     * @param ids
     * @return
     */
    @GetMapping("/collection")
    String testCollection(@RequestParam("list") List<String> ids);
}
